import java.util.Arrays;

/**
 * @ClassDescription:
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/8/28 19:37
 */
public class Test {
    /**
     * 字符串替换
     * 方法：replace
     * @param args
     */
    public static void main(String[] args) {
        String s = "adfsafdsfew";
        String ret = s.replace("fs","999");//替换目标
        System.out.println(ret);
    }



    //////////////////////////////////
    /**
     * 各个类型的转换
     * 方法：valueof,toUpperCase，toLowerCase,toCharArray
     * @param args
     */
    public static void main10(String[] args) {
        String s = "hello";
        char[] array = s.toCharArray();//字符转数组
        char[] array1 = {'a','b','c'};
        String s1 = new String(array1);//数组转字符
        System.out.println(s1);
        System.out.println(Arrays.toString(array));
    }
    public static void main9(String[] args) {
        String s1 = "hello";
        String s2 = "HEELO";
        String ret1 = s1.toUpperCase();//大小写转换
        String ret2 = s2.toLowerCase();
        System.out.println(ret2);
        System.out.println(ret1);
    }
    public static void main8(String[] args) {
        int s = Integer.valueOf("198");//将字符转换为整数
        System.out.println(s);
    }
    public static void main7(String[] args) {
        String s = String.valueOf(true);//将各个类型全变成字符型
        String s1 = String.valueOf(1234);
        System.out.println(s);
        System.out.println(s1);

    }
    /**
     * 查找字符时没有均返回-1
     * String类常见的方法和使用
     * 方法：indexof,lastIndexof,charAt
     * @param args
     */
    //
    public static void main6(String[] args) {
        String s1 = "asdfasffadf";
        /**
         * 也可以查找字符串的位置，也可以设置从哪开始找
         */
        int index = s1.indexOf("fas");
        System.out.println(index);
        /**
         * 也可以倒着找，同样可以设置开始的位置，只不过方向变了
         */
        int index1 = s1.lastIndexOf("fad");
        System.out.println(index1);
    }
    public static void main5(String[] args) {
        //indexOf
        String s1 = new String("hello");
        int h1 = s1.indexOf('h');
        int h2 = s1.indexOf('l',3);//从3这个位置开始找
        //找不到返回-1
        System.out.println(h1);
        //如果这个字符重复了，默认输出第一个遇到的字符的位置
    }
    public static void main4(String[] args) {
        String str = "hello";
        char ch = str.charAt(12);
        //如果想要获取的字符的位置超过了字符的长度
        //就会出现StringIndexOutOfBoundsException:字符串索引越界异常
        System.out.println(ch);
    }
    public static void main3(String[] args) {
        String str = new String("hello");
        String str1 = new String("hello");
        System.out.println(str == str1);
        //其虽然存放的是同样的字符串，但是变量指向的存放字符串的地址不一样
        System.out.println(str.equals(str1));//比较内容
        /**
         * 如果str2>str3,返回正数
         * 相反，返回负数
         * 相同返回0
         */
        String str2 = new String("abc");
        String str3 = new String("acb");
        System.out.println(str2.compareTo(str3));//比较大小
        /**
         * 忽略大小写
         */
        String str4 = new String("abc");
        String str5 = new String("Acb");
        System.out.println(str4.compareToIgnoreCase(str5));
        //因为String类实现了Compare接口，所以自己也重写了compareTo方法
    }
    public static void main2(String[] args) {
        String str = "hello";
        System.out.println(str);
        String str1 = "";
        String str2 = null;
        System.out.println(str1.length());//str1是创建了变量但指向了一个未存放任何东西的地址
        System.out.println(str2.length());//str1是没有指向任何地址
    }
    public static void main1(String[] args) {
        String str = "hello";
        System.out.println(str);//str是一个变量，其指向的是存放这段字符的地址
        //至于为什么不打印地址，是因为String类在继承Object类时就已经重写了这个方法
        //使在调用String类的变量时，有所区别
        char[] array = {'a','b','c'};
        String str1 = new String(array);
        System.out.println(str1);
    }
}
